﻿using ST.Torch.WebApi.Core.Entities.Utils;
using System.Linq.Expressions;


namespace ST.Torch.WebApi.Application.Utils;

public interface  IAutomaticCodeGenerationService
{
	#region curd
	void Insert(AutomaticCodeGeneration entity);


	Task InsertAsync(AutomaticCodeGeneration entity, string[] Includes = null);

	void Update(AutomaticCodeGeneration entity, string[] Includes = null);

	Task UpdateAsync(AutomaticCodeGeneration entity, string[] Includes = null);

	void Delete(AutomaticCodeGeneration entity, bool IsSoft = false);

	Task DeleteAsync(AutomaticCodeGeneration entity, bool IsSoft = false);
    bool Any(Expression<Func<AutomaticCodeGeneration, bool>> predicate);


    Task<bool> AnyAsync(Expression<Func<AutomaticCodeGeneration, bool>> predicate);

    AutomaticCodeGeneration Single(Expression<Func<AutomaticCodeGeneration, bool>> predicate, bool tracking = false);

	Task<AutomaticCodeGeneration> SingleAsync(Expression<Func<AutomaticCodeGeneration, bool>> predicate, bool tracking = false);

	List<AutomaticCodeGeneration> Query(Expression<Func<AutomaticCodeGeneration, bool>> predicate, bool tracking = false);

	Task<List<AutomaticCodeGeneration>> QueryAsync(Expression<Func<AutomaticCodeGeneration, bool>> predicate, bool tracking = false);


	PagedList<AutomaticCodeGeneration> QueryPage(Expression<Func<AutomaticCodeGeneration, bool>> predicate, PageReq page, bool tracking = false);

	Task<PagedList<AutomaticCodeGeneration>> QueryPageAsync(Expression<Func<AutomaticCodeGeneration, bool>> predicate, PageReq page, bool tracking = false);
	




	#endregion
}
